/*
 * 功能：负责处理与消息通知相关的HTTP请求
 * 作者：张杨(Sunny)
 * 日期： 2024/11/30 下午2:47
 */
package com.example.springboot.control;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.common.Result;
import com.example.springboot.entity.Message;
import com.example.springboot.service.MessageService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;


/**
 * 消息通知控制器，提供消息通知相关的CRUD（创建读取更新删除）操作
 */
@RestController
@RequestMapping("message")
public class MessageController {

    @Resource
    MessageService messageService;

    // 新增消息
    @PostMapping("/add")
    public Result add(@RequestBody Message information) {
        messageService.save(information);
        return Result.success();
    }

    // 分页查询消息，返回页码
    @GetMapping("/selectByPage")
    public Result selectByPage(@RequestParam Integer pageNum,
                               @RequestParam Integer pageSize,
                               @RequestParam String content, // 消息内容
                               @RequestParam String state, // 预约状态
                               @RequestParam String username, // 用户名
                               @RequestParam String isRead) { // 是否已读
        Page<Message> page = messageService.selectByPage(pageNum, pageSize, content, state, username, isRead);
        return Result.success(page);
    }

    // 标记当前用户所有未读消息为已读
    @PutMapping("/markAllAsRead")
    public Result markAllAsRead() {
        return messageService.markAllAsRead();
    }

    // 统计每个用户未读消息数量
    @GetMapping("/unReadCountPerUser")
    public Map<String, Integer> unReadCountPerUser() {
        return messageService.unReadCountPerUser();
    }
}
